package TestSparkConversionOperator;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

import java.util.Arrays;
import java.util.List;

public class SparkCollect {
    /**
     * Action算子之collect
     * collect将RDD的所有元素返回给Driver端
     * @param args
     */
    public static void main(String[] args) {
        // 链式调用  local[*]并发处理 local[num] 就num个进程处理
        SparkConf sparkConf = new SparkConf().setAppName("SparkTextFile").setMaster("local");

        JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);
        JavaRDD<String> rdd = javaSparkContext.textFile(args[1]);

        // collect: 将rdd所有数据区回到driver
        List<String> collect = rdd.collect();
        for (String item:collect){
            System.out.println(item);
        }
    }

    public static class SparkUnion {
        /**
         * 将两个结构一样（RDD类型、元素类型等要一致）的RDD合并为一个新的RDD。
         * 结构不一样的不能合并。
         * @param args
         */
        public static void main(String[] args) {
            SparkConf sparkConf = new SparkConf().setAppName("Union").setMaster("local");

            JavaSparkContext sc = new JavaSparkContext(sparkConf);

            JavaRDD<Integer> rdd1 = sc.parallelize(Arrays.asList(1, 2, 3));

            JavaRDD<Integer> rdd2 = sc.parallelize(Arrays.asList(1, 4, 5, 6));

            JavaRDD<Integer> rdd3 = rdd1.union(rdd2);

            List<Integer> res = rdd3.collect();

            for (Integer i : res){
                System.out.println(i);
            }



        }
    }
}
